let secret_code = '' //全局变量
Page({
  data: {
    mobile: '',
    code: '',
    backTo: '',
    countDownVisible: false,
  },
  onLoad(params) {
    this.setData({
      backTo: params.backTo,
    })
  },
  countDownChange(ev) {
    this.setData({
      timeData: ev.detail,
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },
  // 验证手机号格式
  validMobile() {
    // 宽松的验证规则
    const reg = /^[1][3-8][0-9]{9}$/
    // 正则验证（去除两端空格）
    const flag = reg.test(this.data.mobile.trim())
    // 返回验证结果
    return flag
  },
  async getCode() {
    // 1.获取输入的手机号
    // 2.手机号校验
    if (!this.validMobile()) return wx.utils.toast('手机号不正确')
    // 3.发送请求，获取验证码
    const { code, data } = await wx.http.get('/code', { mobile: this.data.mobile.trim() })
    if (code !== 10000) return wx.utils.toast()
    secret_code = data.code
    wx.utils.toast('验证码短信中查收')
    // 4.展示倒计时
    this.setData({ countDownVisible: true })
  },
  // 复制验证码
  copyCode() {
    wx.setClipboardData({
      data: secret_code,
    })
  },
  // 校验验证码
  validCode() {
    const reg = /^\d{6}$/
    const flag = reg.test(this.data.code.trim()) && this.data.code === secret_code
    return flag
  },
  async submit() {
    // 1.校验手机号，验证码
    if (!this.validMobile()) return wx.utils.toast('手机号不正确')
    if (!this.validCode()) return wx.utils.toast('验证码不正确')
    // 2.发送登录请求
    const { code, data } = await wx.http.post('/login', {
      mobile: this.data.mobile.trim(),
      code: this.data.code.trim(),
    })
    if (code !== 10000) return wx.utils.toast()
    getApp().setToken(data.token, data.refreshToken)

    // 跳转回被拦截的页面
    wx.redirectTo({
      url: this.data.backTo,
    })
  },
})
